#ifndef DSPSIMULATOR_ELF32HEADER_H
#define DSPSIMULATOR_ELF32HEADER_H

#include <simulator/type/type.h>

#define ELFMAG "\177ELF"    // ELF魔数

#define  EI_NIDENT 16

typedef struct {
    u8 e_ident[EI_NIDENT];  // 用于解码和解释文件中与机器无关的数据的数组
    u16 e_type;             // 目标文件类型
    u16 e_machine;          // 当前文件可以运行的机器架构
    u32 e_version;          // 目标文件的版本
    u32 e_entry;            // 系统转交控制权给 ELF 中相应代码的虚拟地址
    u32 e_phoff;            // 程序头部表在文件中的字节偏移
    u32 e_shoff;            // 节头表在文件中的字节偏移
    u32 e_flags;            // 文件中与特定处理器相关的标志
    u16 e_ehsize;           // ELF 文件头部的字节长度
    u16 e_phentsize;        // 程序头部表中每个表项的字节长度
    u16 e_phnum;            // 程序头部表的项数
    u16 e_shentsize;        // 节头的字节长度
    u16 e_shnum;            // 节头表中的项数
    u16 e_shstrndx;         // 节头表中与节名字符串表相关的表项的索引值
} Elf32_Ehdr;

#endif //DSPSIMULATOR_ELF32HEADER_H
